﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Kooboo.Commerce
{
    public interface ICart
    {
        int Id
        {
            get;
            set;
        }

        ICustomer Customer
        {
            get;
            set;
        }

        DateTime CreateDate
        {
            get;
            set;
        }

        string Coupon
        {
            get;
            set;
        }

        IShipping Shipping
        {
            get;
            set;
        }

        IPayment Payment
        {
            get;
            set;
        }

     
        string EmailAddress
        {
            get;
            set;
        }

        string FirstName
        {
            get;
            set;
        }

        string LastName
        {
            get;
            set;
        }

        string Address1
        {
            get;
            set;
        }

        string Address2
        {
            get;
            set;
        }

        string Postcode
        {
            get;
            set;
        }

        string City
        {
            get;
            set;
        }

        string State
        {
            get;
            set;
        }

        string Country
        {
            get;
            set;
        }

        string Phone
        {
            get;
            set;
        }

        bool UseInvoiceAddress
        {
            get;
            set;
        }

        string InvoiceFirstName
        {
            get;
            set;
        }

        string InvoiceLastName
        {
            get;
            set;
        }

        string InvoiceAddress1
        {
            get;
            set;
        }

        string InvoiceAddress2
        {
            get;
            set;
        }

        string InvoiceCity
        {
            get;
            set;
        }

        string InvoiceState
        {
            get;
            set;
        }

        string InvoiceCountry
        {
            get;
            set;
        }

        string InvoicePostcode
        {
            get;
            set;
        }

        string InvoicePhone
        {
            get;
            set;
        }

        string Remark
        {
            get;
            set;
        }


        decimal InsuredAmount
        {
            get;
            set;
        }


        //for calculating
        decimal Discount
        {
            get;
            set;
        }

        decimal TotalDiscount
        {
            get;
            set;
        }

        decimal TotalTaxCost
        {
            get;
            set;
        }

        decimal SubTotal
        {
            get;
            set;
        }

        decimal Total
        {
            get;
            set;
        }

        decimal PaymentMethodCost
        {
            get;
            set;
        }

        decimal ShippingCost
        {
            get;
            set;
        }

        //relations
        List<ICartItem> CartItems
        {
            get;
            set;
        }

        bool IsOrdered
        {
            get;
            set;
        }
    }
}
